import cv2
import numpy as np
import matplotlib.pyplot as plt

img_flower=cv2.imread('./img/1.jpg',0)#直接读为灰度图像
img_man_1=cv2.imread('./img/2.jpg',0)#直接读为灰度图像

plt.imshow(img_man_1, 'gray')
plt.show()
height,width=img_flower. shape[:2]
img_man=cv2. resize(img_man_1,(width, height))
plt.imshow(img_man,'gray')
plt.show()
plt.subplot(221), plt. imshow(img_flower, 'gray'),plt.title('origial1')
plt.xticks([]),plt.yticks([])
plt.subplot(222), plt. imshow(img_man, 'gray'), plt.title('origial_2')
plt.xticks([]),plt.yticks([])


#----------------------P2----------------------------
f1=np.fft.fft2(img_flower)
f1shift=np.fft.fftshift(f1)
f1_A=np.abs(f1shift)#取振幅
f1_P=np.angle(f1shift)#取相位
f2=np.fft.fft2(img_man)
f2shift=np.fft.fftshift(f2)
f2_A=np. abs(f2shift)#取振幅
f2_P=np.angle(f2shift)#取相位
#---图1的振幅--图2的相位
img_new1_f=np.zeros(img_flower. shape,dtype=complex)
img1_real=f1_A*np.cos(f2_P)#取实部
img1_imag=f1_A*np.sin(f2_P)#取虚部
img_new1_f.real=np.array(img1_real)
img_new1_f.imag=np.array(img1_imag)
f3shift=np.fft.ifftshift(img_new1_f)#对新的进行逆变换
img_new1=np.fft.ifft2(f3shift)
#出来的是复数,无法显示
img_new1= np.abs(img_new1)
#调整大小范围便于显示

img_new1= (img_new1-np.amin(img_new1))/(np. amax(img_new1)-np. amin(img_new1))
plt.subplot(223), plt. imshow(img_new1,'gray'), plt.title('another way')
plt.xticks([]), plt. yticks([])
#---图2的振幅--图1的相位
img_new2_f=np. zeros(img_flower. shape, dtype=complex)
img2_real=f2_A*np. cos(f1_P)#取实部
img2_imag=f2_A*np.sin(f1_P)#取虚部
img_new2_f.real= np.array(img2_real)
img_new2_f.imag = np.array(img2_imag)
f4shift=np.fft.ifftshift(img_new2_f)#对新的进行逆变换
img_new2=np.fft.ifft2(f4shift)
#出来的是复数,无法显示
img_new2= np. abs(img_new2)
#调整大小范围便于显示
img_new2=(img_new2-np.amin(img_new2))/(np. amax(img_new2)-np.amin(img_new2))
plt.subplot(224), plt.imshow(img_new2,'gray'),plt.title('another way')
plt.xticks([]),plt.yticks([])
plt.show()